 ; division routine { posted to comp.sys.acorn by Conrad Hughes }

 .MACRO INTdivide_mac
  STR %3,\arg3save
  STR %2,\arg2save

  MOV tempregister,#0
  CMP %2,#0
   RSBLT %2,%2,#0
   SUBLT tempregister,tempregister,#1
  CMP %3,#0
   RSBGT %3,%3,#0
   MVNLT tempregister,tempregister
  STR tempregister,\sign

  MOV  tempregister,#0
  ADDS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBCC tempregister,tempregister,%3
  ADCS  %2,%2,%2
  LDR tempregister,\sign
  CMP tempregister,#0
  RSBNE %2,%2,#0
  MOV tempregister,%2
  LDR %2,\arg2save
  LDR %3,\arg3save
  MOV %1,tempregister
  GO \hupf
\sign .WORD 0
\arg2save .WORD 0
\arg3save .WORD 0
\hupf
 .ENDM

